package com.woniuxy.entity;

import com.woniuxy.utils.CodeUtils;

import lombok.Data;
import lombok.experimental.Accessors;

/**
 * 
* <p>Title: ResponseEntity</p>  
* <p>Description: 返回数据泛型类 </p>  
* @author 王敞   365799712@qq.com
* @date 2020年6月10日
 */
@Data
@Accessors(chain = true)
public class ResponseEntity<T> {
	private int code;// 状态码，根据业务情况选择合适的
	private String msg;// 消息
	private T data;// 数据，若无数据则类型为Void
	
	/**
	 * 无数据返回的成功响应
	 */
	public static final ResponseEntity<Void> SUCCESS=new ResponseEntity<>(CodeUtils.SUCCESS_CODE,"ok");//


	/**
	 * controller使用数据校验的时候返回校验失败的状态码，具体信息msg由具体错误指定
	 */
	public static final ResponseEntity<Void> ERROR=new ResponseEntity<>(CodeUtils.ERROR_CODE);

	/**
	 * 无参构造函数
	 */
	public ResponseEntity() {
	
	}

	/**
	 * 无数据返回构造函数，错误状态，具体信息msg具体指定
	 * @param code
	 */
	public ResponseEntity(int code){
		this.code=code;
	}

	/**
	 * 无数据返回构造函数
	 * @param code
	 * @param msg
	 */
	public ResponseEntity(int code,String msg){
		this(code,msg,null);
	}
	
	/**
	 * 构造函数
	 * @param code
	 * @param msg
	 * @param data
	 */
	public ResponseEntity(int code,String msg,T data) {
		this.code=code;
		this.msg=msg;
		this.data=data;
	}
	/**
	 * 有数据返回的成功构造函数
	 * @param data
	 */
	public ResponseEntity(T data) {
		this(200,"ok",data);
	}
}
